In this script, there is conducted the estimation for the
measure_marginal approach for a single given env. The
programs is the set of bytecode programs with varying number of opcodes.
The measurements are time measurements of program runs or benchmarks.
The estimation of each opcode is calculated as the regression against
the number of a given opcode in the executed programs.
Parametrization. The evm client name env=evmone, the file with
programs programs=pg_marginal_full.csv, the file with measurements
results=results_marginal_full_evmone.csv,
the output csv file with estimated cost
output_estimated_cost=reports-12.01.2025/estimated_cost_marginal_full_evmone.csv,
should the details be included in the report details=FALSE.
The comparision of result. Before and after removing outlying
measurement. Switch removed_outliers to FALSE
to see the comparison.
if (removed_outliers) {
measurements = remove_compare_outliers(measurements, 'measure_total_time_ns', c(env))
}
Now we can investigate the linear regressions.
for (opcode in all_opcodes) {
estimate = compute_all(opcode=opcode, env=env, use_median=TRUE, plots=ifelse(details,'all','scatter'))
estimates[nrow(estimates) + 1, ] = c(opcode, estimate, env)
}
The resulting estimates based on the regressions above.
estimates
## op estimate_marginal_ns estimate_marginal_ns_stderr env
## 1 ADD 2.743772727 0.095755012 evmone
## 2 MUL 12.407867273 0.177361195 evmone
## 3 SUB 2.743240909 0.096384462 evmone
## 4 DIV 12.025501818 0.092986290 evmone
## 5 SDIV 15.704780000 0.100986995 evmone
## 6 MOD 12.006354545 0.094247887 evmone
## 7 SMOD 15.560722727 0.095766838 evmone
## 8 ADDMOD 19.359514545 0.043506213 evmone
## 9 MULMOD 32.271122727 0.069570266 evmone
## 10 EXP 51.217724545 0.110405165 evmone
## 11 SIGNEXTEND 2.194422727 0.098196387 evmone
## 12 LT 1.315517273 0.091841827 evmone
## 13 GT 1.311792727 0.090722205 evmone
## 14 SLT 1.533600909 0.099507297 evmone
## 15 SGT 1.531204545 0.099657007 evmone
## 16 EQ 1.719312727 0.100763787 evmone
## 17 ISZERO 0.926716364 0.100874861 evmone
## 18 AND 4.165215455 0.128158201 evmone
## 19 OR 4.158335455 0.128865967 evmone
## 20 XOR 4.173126364 0.127518448 evmone
## 21 NOT 4.167151818 0.135153083 evmone
## 22 BYTE 1.498188182 0.097878710 evmone
## 23 SHL 5.979898182 0.094692940 evmone
## 24 SHR 2.966823636 0.100538355 evmone
## 25 SAR 7.610057273 0.148454669 evmone
## 26 KECCAK256 175.176154545 0.118396321 evmone
## 27 ADDRESS 11.719962727 0.165789011 evmone
## 28 ORIGIN 29.982928182 0.121429727 evmone
## 29 CALLER 11.898802727 0.218418726 evmone
## 30 CALLVALUE 7.334171818 0.171429847 evmone
## 31 CALLDATALOAD 1.312001818 0.197010351 evmone
## 32 CALLDATASIZE 1.128894545 0.224340483 evmone
## 33 CALLDATACOPY 4.815854545 0.163817024 evmone
## 34 CODESIZE 1.121036364 0.210087136 evmone
## 35 CODECOPY 3.849663636 0.082718506 evmone
## 36 GASPRICE 25.601010000 0.180001465 evmone
## 37 EXTCODESIZE 0.313455455 0.003879403 evmone
## 38 EXTCODECOPY 0.498990000 0.028283526 evmone
## 39 RETURNDATASIZE 1.070179091 0.230774451 evmone
## 40 RETURNDATACOPY 4.988781818 0.161266389 evmone
## 41 EXTCODEHASH 0.320429091 0.003393743 evmone
## 42 COINBASE 30.071604545 0.176130994 evmone
## 43 TIMESTAMP 17.892529091 0.234952134 evmone
## 44 NUMBER 18.073190909 0.238317551 evmone
## 45 DIFFICULTY 25.343280000 0.134338997 evmone
## 46 GASLIMIT 17.917430000 0.281389113 evmone
## 47 CHAINID 25.602368182 0.179213016 evmone
## 48 SELFBALANCE 5.838818182 0.221684173 evmone
## 49 POP 1.309536364 0.118884155 evmone
## 50 MLOAD 1.665025455 0.184476433 evmone
## 51 MSTORE8 1.937137273 0.246724883 evmone
## 52 JUMP 2.167850909 0.180041093 evmone
## 53 JUMPI 2.529902727 0.242155166 evmone
## 54 PC 1.059958182 0.234559575 evmone
## 55 MSIZE 1.107707273 0.215146136 evmone
## 56 GAS 1.034990909 0.208428735 evmone
## 57 JUMPDEST 1.695140182 0.117975972 evmone
## 58 PUSH0 1.113413636 0.215734971 evmone
## 59 LOG0 69.294795455 1.898680736 evmone
## 60 LOG1 71.156803636 2.607678888 evmone
## 61 LOG2 86.361719091 6.540935934 evmone
## 62 LOG3 101.202245455 8.752604586 evmone
## 63 LOG4 104.067509091 8.950512964 evmone
## 64 CALL -2.859476364 0.244556823 evmone
## 65 RETURN -0.007776364 0.035799755 evmone
## 66 DELEGATECALL -2.659450909 0.109040657 evmone
## 67 STATICCALL -2.890980909 0.172949272 evmone
## 68 REVERT -0.007770000 0.034720408 evmone
## 69 PUSH1 1.709375455 0.284067417 evmone
## 70 PUSH2 1.608044545 0.260098402 evmone
## 71 PUSH3 1.540737273 0.275860014 evmone
## 72 PUSH4 1.557668182 0.273133255 evmone
## 73 PUSH5 1.624590909 0.269722528 evmone
## 74 PUSH6 1.564021818 0.272201806 evmone
## 75 PUSH7 1.623176364 0.268082720 evmone
## 76 PUSH8 1.572287273 0.280735746 evmone
## 77 PUSH9 1.719004545 0.272729904 evmone
## 78 PUSH10 1.726524545 0.298091818 evmone
## 79 PUSH11 1.787484545 0.280547887 evmone
## 80 PUSH12 1.796282727 0.283037725 evmone
## 81 PUSH13 1.743746364 0.290591069 evmone
## 82 PUSH14 1.807596364 0.276391631 evmone
## 83 PUSH15 1.803605455 0.278011451 evmone
## 84 PUSH16 1.902743636 0.294055773 evmone
## 85 PUSH17 1.984220000 0.278193178 evmone
## 86 PUSH18 2.161836364 0.285654511 evmone
## 87 PUSH19 2.132347273 0.297974771 evmone
## 88 PUSH20 2.242810000 0.289157101 evmone
## 89 PUSH21 2.352638182 0.299978535 evmone
## 90 PUSH22 2.379380909 0.297084375 evmone
## 91 PUSH23 2.428543636 0.194618601 evmone
## 92 PUSH24 2.305659091 0.213680125 evmone
## 93 PUSH25 2.507992727 0.202359174 evmone
## 94 PUSH26 2.457198182 0.198653720 evmone
## 95 PUSH27 2.463810000 0.227448682 evmone
## 96 PUSH28 2.456946364 0.243669212 evmone
## 97 PUSH29 2.463518182 0.241248133 evmone
## 98 PUSH30 2.491711818 0.241485164 evmone
## 99 PUSH31 2.511880909 0.235060978 evmone
## 100 PUSH32 3.226874545 0.171987119 evmone
## 101 DUP1 0.911340909 0.092149459 evmone
## 102 DUP2 0.910384545 0.097658156 evmone
## 103 DUP3 0.908206364 0.098450066 evmone
## 104 DUP4 0.960272727 0.111552458 evmone
## 105 DUP5 0.931607273 0.098244260 evmone
## 106 DUP6 0.926402727 0.098462100 evmone
## 107 DUP7 0.960881818 0.106469807 evmone
## 108 DUP8 0.906401818 0.098180654 evmone
## 109 DUP9 0.925093636 0.097531315 evmone
## 110 DUP10 0.951713636 0.113122206 evmone
## 111 DUP11 0.909803636 0.095183876 evmone
## 112 DUP12 0.933414545 0.100383706 evmone
## 113 DUP13 0.958016364 0.109855059 evmone
## 114 DUP14 0.922673636 0.096425900 evmone
## 115 DUP15 0.930332727 0.099307221 evmone
## 116 DUP16 0.938211818 0.105363801 evmone
## 117 SWAP1 3.845812727 0.171701019 evmone
## 118 SWAP2 3.845572727 0.183533298 evmone
## 119 SWAP3 3.785810909 0.171312267 evmone
## 120 SWAP4 3.778337273 0.171579656 evmone
## 121 SWAP5 3.861620909 0.187310327 evmone
## 122 SWAP6 3.871387273 0.193769038 evmone
## 123 SWAP7 3.792503636 0.185188797 evmone
## 124 SWAP8 3.836467273 0.174943099 evmone
## 125 SWAP9 3.852827273 0.189070636 evmone
## 126 SWAP10 3.863721818 0.182335003 evmone
## 127 SWAP11 3.833721818 0.180598509 evmone
## 128 SWAP12 3.882257273 0.202017090 evmone
## 129 SWAP13 3.857888182 0.193816984 evmone
## 130 SWAP14 3.861672727 0.187223574 evmone
## 131 SWAP15 3.841660909 0.157432307 evmone
## 132 SWAP16 3.884692727 0.196465132 evmone
The results are exported to reports-12.01.2025/estimated_cost_marginal_full_evmone.csv.